package shuaige.jdk.多线程.base.线程类方法使用示例;

import lombok.SneakyThrows;

/**
 * 此方法让当前正在执行的线程暂停，但它不会阻塞该线程，它只是将该线程转入就绪状态。yield()只是让当前线程暂停一下，让系统的线程调度器重新调度一次。
 */
public class 线程让步 implements Runnable {


    public static void main(String[] args) {
        // 启动两条并发线程
        Thread yt1 = new Thread(new 线程让步(), "低级");
        // 将ty1线程设置成最高优先级
        yt1.setPriority(Thread.MIN_PRIORITY);
        yt1.start();

        Thread yt2 = new Thread(new 线程让步(), "高级");
        // 将yt2线程设置成最低优先级
        yt2.setPriority(Thread.MAX_PRIORITY);
        yt2.start();
    }

    @Override
    @SneakyThrows
    public void run() {
        for (int i = 0; i < 50; i++) {
            Thread thread = Thread.currentThread();
            String name = thread.getName();
            int priority = thread.getPriority();
            System.out.println(name + ",其优先级是：" + priority + ",循环变量的值为:" + i);
            // 当i等于20时，使用yield方法让当前线程让步
            System.out.println("-------------------------- 开始让步 --------------------------");
            Thread.yield();
        }
    }

}